iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 16
0
Modern Web

Django案例實作之踩坑全記錄系列 第 16

(二更)Django - template(二)

  • 分享至 

  • xImage
  •  

昨天測驗表已經成功放到網頁上,今天則是要做分數的加總,需要修改昨天寫好的function play及新增function result。

views.py(更正程式碼倒數第二行及說明第二點)

def play(request):
    question = Question.objects.all()
    if request.method == 'POST': #當測驗者提出表單(submit)
        total = [] #匯集測驗者每題的得分
        for q in question:
            select = request.POST[str(q.id)] #獲得測驗者選擇的選項
            choice = q.choice_set.all().values()
            for i in choice: #loop四個選項
                if i['choice_text'] == select: 
                    total.append(i['score']) #選項對照的得分
        return redirect(result, total=sum(total)) #傳送表單完就跳轉至結果畫面

    return render(request, 'play.html', {'question':question})
  1. request.POST[str(n)]也可以寫成request.POST.get(str(n))。
  2. 為了讓傳送表單後轉到result.html,這邊使用redirect,裡面的第一個參數是viewname,並傳送總分數total給view result。

測驗結果畫面的函數如下:

def result(request, total):
    score = total
    return render(request, 'result.html', {'score':score})

template

在template資料夾下新增result.html,當作測驗結果網頁,並放上最後的總得分:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
總分:{{ score }}
</body>
</html>

小結:明天再把結果畫面裝飾一下 ^^


上一篇
Django - template (ㄧ)
下一篇
Django - redirect錯誤示範
系列文
Django案例實作之踩坑全記錄34
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言